NocoBaseで作成したフォームのフィールドを動的に変更したい

NocoBaseで作成したフォームのフィールドを動的に変更したい

Clock Icon2024.08.13

やりたいこと

フォームに表示されているフィールドの初期値を条件によって変更したり、非表示にできないか?

対応方法

フォームブロックのオプションにLinkage rules(連動規制)という機能があります。
これは、フィールドの状態やフィールドへの値の割り当ての動的制御をサポートしてくれます。

Linkage rules

※なお、フォームブロックだけではなく、詳細ブロックやフィルターブロックでもこの連動規制の機能が使えるようでした。

スクリーンショット 2024-08-13 9.41.59

フォームの設定に連動規制というメニューがありますので、これをクリックすると設定画面が立ち上がります。

スクリーンショット 2024-08-13 9.44.49

設定例

ライセンスの申請フォームを例にして試してみます。
支払いタイプが月払い、年払いのライセンスが登録されています。

動的に変更したい点

ライセンスによって終了予定日に入る日付を自動で変更したい。

年払いの場合は期末の日付、月払いの場合は次の月の月末の日付にしたい というケースでやってみます。

年払いの場合

まずは条件を指定します。

スクリーンショット 2024-08-13 9.53.52

  1. フィールドの選択
    支払いタイプを示すフィールドを選択します。
  2. 比較
    同じ、同じではない、含む、含まない、空である、空ではない の中から選択します。
    今回は 同じ にしました。

  3. 1のフィールドとの比較したい値を入力したり、選択したりできます

次に属性の設定をします。
これは 日付を自動で変更したい を実現する設定になります。

スクリーンショット 2024-08-13 10.02.04

  1. フィールドの選択
    終了予定日のフィールドを選択します。
  2. actionの選択
    1のフィールドに対してどのようなアクションをするのかを選択します。
    表示、非表示、無効化、必須にする、値を挿入 などのアクションが登録されていました。
    今回は値
  3. 値に何を指定するか選択
    定数、式、空 を選択できました。
    年払いの場合は定数にします。
  4. 値を入力
    指定日付を決定します。ここでは2025-06-30を設定。

月払いの場合

スクリーンショット 2024-08-13 10.14.34

属性の値を表示式にします。
式に使用するシンタックスですが、現状ではFormula.js ※1 の関数が使えるようでした。

※1 Microsoft Excelのほとんどの数式関数のJavaScript実装したもの

月払いの場合は次の月の月末の日付にしたい ので、 EOMONTH関数を使います。
EOMONTH関数は、過去または未来のnヶ月後の月の最終日を返します

EOMONTH(TODAY(), 1)

確認

設定通りの挙動になるのか確認します。

https://www.youtube.com/watch?v=ZoN2WJh64d8

月払いと年払いで終了予定日が変更されていますね。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.